General remarks

In TUGboat10#2 we presented a new scheme to select fonts in TEX macro packages. This article describes the use of this new scheme in the LATEX environment. The technical parts of the interface (which are of some interest to readers who plan to use our scheme with other fonts or with other macro packages) will be published in a separate article.

The necessary macros are distributed by the AMS together with the amstex.sty option which was announced in TUGboat10#3. The availability of the new font selection scheme at the usual servers will be announced separately in TEXhax, etc. Please refrain from asking for personal distribution.

To get a better understanding of this LATEX interface, some words on the organisation of font families are in order. Readers of our article about the basic macros will notice that our understanding of these matters increased while working on this interface and the -LATEX project; in some regards we have changed our point of view rather drastically. Surprisingly, only a few internal details within the basic macros needed adjustment; it seems that even without the real understanding, we instinctively got most of the things right when we designed them. (But probably we are still ignorant of the underlying concepts.)

In his book about ``Methods of Book Design'' Hugh Williamson writes [1]

[...] To the printer, an alphabet is a set of twenty-six letters of a certain design and body, together with a few additional combinations of letters. A fount is usually made up of a set of alphabets of one size and based on one design. It may consist of one alphabet only, if no more alphabets exist in that design and size. Usually however a text fount will comprise five alphabets — roman and italic upper and lower-case, and small capitals. [...] A series is a set of founts closely related to each other in design, and usually very similar to each other, but graded in size. If only one alphabet has been made in a certain design, that alphabet alone may be a series. A family is a group of series compatible for composition, but loosely related in design. A family may include excerpts from more than one series.

Since TEX's physical fonts (which is the American word for fount) all contain exactly two alphabets, namely the upper and lower-case alphabets of a certain design, we will use the word font for physical TEX fonts, and fount for bundles of TEX fonts consisting for example of roman (upright or normal), italic and small capitals shapes.

The above quotation gives a good clue how to organize fonts in our font selection scheme. Hence we use the \fontshape command from the basic macros to distinguish between normal (n), italic (it), small caps (sc), sloped or slanted (sl) and upright italic (u) typefaces within one fount. Founts of different sizes form a series, so we use \fontsize to access these. We think that the weight and the width of a series are good candidates to distinguish between individual series, therefore we combine them in the \fontseries command. Again we use one and two letter abbreviations as shown in table [*]. One or more of these series form a family which is accessed via the \fontfamily command.


Table: Weight and width classification for fonts. The percent values are derived from [2]. To combine the abbreviations in the fontseries command, weight is used first and any instance of medium (m) is dropped except when weight and width are both medium. In this case one single m is used. So bold expanded would be bx whereas medium expanded would be x.
Weight Class
Ultralight ul
Extralight el
Light l
Semilight sl
Medium (normal) m
Semibold sb
Bold b
Extrabold eb
Ultrabold ub
Width Class
Ultracondensed 50% uc
Extracondensed 62.5% ec
Condensed 75% c
Semicondensed 87.5% sc
Medium 100% m
Semiexpanded 112.5% sx
Expanded 125% x
Extraexpanded 150% ex
Ultraexpanded 200% ux


To give some practical example, we arranged the most important families of the Computer Modern fonts according to this classification in table [*]. Please note that some families like `computer modern funny roman' (cmff) or `computer modern sans serif quotation' (cmssq) are unclassified. These special purpose fonts are not accessible in the standard distribution of the new font selection scheme, although they could be added easily in a style file.


Table: Classification of the Computer modern fonts. You will notice that not all possible combinations of family, series and shape are available. E.g. there is no small capitals shape in the medium series of the computer modern sans serif. However, Philip Taylor announced recently that he has filled some of the holes. It might be a good idea to include such additional parameter files for into the general distributions.
3pt
cmssbxComputer Modern families
cmssbxfamily cmssbxseries cmssbxshape(s) cmssbxExample of external names
Computer modern roman
cmr m n, it, sl, sc, u cmr10, cmti10, cmsl10, cmcsc10, cmu10
cmr bx n, it, sl cmbx10, cmbxti, cmbxsl
cmr b n cmb10
Computer modern sans serif
cmss m n, sl cmss10, cmssi10
cmss bx n cmssbx10
cmss sbc n cmssdc10
Computer modern typewriter
cmtt m n, it, sl, sc cmtt10, cmitt10, cmsltt, cmtcsc10
Computer modern fibonacci
cmfi m n cmfib8


Given this overview about the classification of fonts it should be clear how to select a specific font with the primitive commands \fontfamily, \fontseries, \fontshape, \fontsize, and \selectfont. As described in [5], the size macro takes two arguments: the size in printer's points as a numeral (i.e. without the dimension) and the corresponding baselineskip value (with a dimension). selectfont finally selects the font using values of the surrounding environment if some of the commands are missing. For example statements like ``Concrete roman condensed slanted font at 9pt with 11pt leading''2 will be translated into command sequences of the form:

\fontfamily{ccr}\fontseries{c}%
    \fontshape{sl}\fontsize{9}{11pt}%
    \selectfont
This will explicitly load the font mentioned above, provided the necessary font shapes are known to the system.3

However, in the normal case, the LATEX user can safely rely on the standard LATEX font selection commands defined in terms of these primitive commands. These standard commands are discussed in the next sections.